<?php
class ElementoKakoon extends Datos
{
    public $elementokakoon_id;
    public $contenidokakoon_id;
    public $sector;
    public $naturaleza;
    public $literal;
    public $texto;
    public $html;
    public $entero;
    public $doble;

    const TABLA             = "elementoskakoon";
    const CLAVE_PRIMARIA    = "elementokakoon_id";

    public function recuperaValor()
    {
        $retorno = null;

        if ($this->esLiteral())
        {
            $retorno = $this->getPropiedad ("literal");
        }

        if ($this->esTexto())
        {
            $retorno = $this->getPropiedad ("texto");
        }

        if ($this->esEntero())
        {
            $retorno = $this->getPropiedad ("entero");
        }

        if ($this->esDoble())
        {
            $retorno = $this->getPropiedad ("doble");
        }

        if ($this->esHtml())
        {
            $retorno = $this->getPropiedad ("html");
        }
        
        return $retorno;
    }

    public function registraValor ($valor)
    {
        $this->setPropiedad ("literal", null);
        $this->setPropiedad ("texto",   null);
        $this->setPropiedad ("html",    null);
        $this->setPropiedad ("entero",  null);
        $this->setPropiedad ("doble",   null);
        
        if ($this->esLiteral())
        {
            $this->setPropiedad ("literal", $valor);
        }
        
        if ($this->esTexto())
        {
            $this->setPropiedad ("texto", $valor);
        }
        
        if ($this->esHtml())
        {
            $this->setPropiedad ("html", $valor);
        }
        
        if ($this->esEntero())
        {
            $this->setPropiedad ("entero", $valor);
        }
        
        if ($this->esDoble())
        {
            $this->setPropiedad ("doble", $valor);
        }
    }

    public function esLiteral()
    {
        return (ConstantesKakoon::ELEMENTO_LITERAL == $this->getPropiedad("naturaleza"));
    }

    public function esTexto()
    {
        return (ConstantesKakoon::ELEMENTO_TEXTO == $this->getPropiedad("naturaleza"));
    }

    public function esHtml()
    {
        return (ConstantesKakoon::ELEMENTO_HTML == $this->getPropiedad("naturaleza"));
    }

    public function esEntero()
    {
        return (ConstantesKakoon::ELEMENTO_ENTERO == $this->getPropiedad("naturaleza"));
    }

    public function esDoble()
    {
        return (ConstantesKakoon::ELEMENTO_DOBLE == $this->getPropiedad("naturaleza"));
    }

    public function registraTipos()
    {
        $tabla  = ContenidoKakoon::TABLA;
        $filtro = ContenidoKakoon::CLAVE_PRIMARIA;

        $this->setTipo($filtro,         new TipoDatoRelacionFijo($this->accesoBD, $tabla, array("titulo"), $filtro));
        $this->setTipo("sector",        new TipoDatoLiteral(50));
        $this->setTipo("naturaleza",    new TipoDatoLiteral(50));
        $this->setTipo("literal",       new TipoDatoLiteral());
        $this->setTipo("texto",         new TipoDatoTexto());
        $this->setTipo("html",          new TipoDatoTextoHTML());
        $this->setTipo("entero",        new TipoDatoEntero());
        $this->setTipo("doble",         new TipoDatoNumerico());
    }

    public function registraEsenciales()
    {
        $this->setEsencial(ContenidoKakoon::CLAVE_PRIMARIA);
        $this->setEsencial("sector");
        $this->setEsencial("naturaleza");
    }

    public function registraUnicos()
    {
        $this->setUnico(array(ContenidoKakoon::CLAVE_PRIMARIA, "sector"));
    }

    public function registraMetas()
    {
        $this->setInfo(ContenidoKakoon::CLAVE_PRIMARIA,	"Contenido", 	"Contenido a la que pertenece el elemento");
        $this->setInfo("sector",						"Sector",    	"Sector del elemento dentro del contenido");
        $this->setInfo("naturaleza",    				"Naturaleza",   "Naturaleza del dato del elemento");
        $this->setInfo("literal",    					"Literal",   	"Valor del elemento como literal");
        $this->setInfo("texto",    						"Texto",   		"Valor del elemento como texto");
        $this->setInfo("html",    						"Html",   		"Valor del elemento como html");
        $this->setInfo("entero",    					"Entero",   	"Valor del elemento como numero entero");
        $this->setInfo("doble",    						"Doble",   		"Valor del elemento como numero doble");
    }
     
    public function getTabla()
    {
        return self::TABLA;
    }

    public function getClavePrimaria()
    {
        return self::CLAVE_PRIMARIA;
    }
}
?>